﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using RayDen.Library.Components;
using RayDen.Library.Components.Color;
using RayDen.Library.Core.Primitives;

namespace Lt.Engine.Sampling
{
    public interface ILightsource
    {
        bool IsDelta { get; }

        bool IsFinite { get; }

        int ProfileId { get; }

        IRadianceEvaluation Le(ref Point position, ref Vector direction, out float emissionPdf, out float directPdf);

        IRadianceEvaluation Illuminate(
                ref SceneSphere aSceneSphere,
                ref Point position,
                float u,
                float v,
                out LightSample lightSample
            );

        IRadianceEvaluation Emit(
                ref SceneSphere aSceneSphere,
                float dirU,
                float dirV,
                float posU,
                float posV,
                out Point oPosition,
                out LightSample lightSample
            );
    }
}
